← Về thư mục
📄 / / projects / tech / Hermes-agents / Implementation Plan Hermes Agents.md

Unified Hermes Architecture — Single Brain, Multiple Interfaces

Trạng thái: Đã kiểm tra hạ tầng thực tế (2026-09-07). Sẵn sàng triển khai.


Tóm Tắt Vấn Đề

Hệ thống hiện tại đang bị phân tán thành nhiều "não" riêng biệt:

Interface Trạng thái hiện tại Vấn đề
Telegram Bot ✅ Kết nối VPS Hermes → 9router Hoạt động tốt
Hermes Desktop (Mac) ❌ Chạy agent local riêng, config trống Không có profiles, skills, secrets từ VPS
Antigravity IDE (Mac) ✅ Workspace local ~/Documents/GitHub Không đồng bộ ngược lên VPS sau khi Hermes tạo file
Git Workspace ⚠️ 1 chiều: VPS chỉ git pull từ Mac File VPS tạo ra không tự đẩy về Mac

Mục tiêu: 1 brain duy nhất trên VPS, tất cả interfaces cùng kết nối về đó và dùng chung 1 workspace.


Phát Hiện Hạ Tầng Quan Trọng (Sau Kiểm Tra Thực Tế)

✅ Những gì đã có sẵn, KHÔNG cần setup mới:

  1. hermes-dashboard.service đang chạy active trên VPS (port 9119):
  2. Lệnh: hermes -p default dashboard --port 9119 --host 127.0.0.1 --skip-build
  3. Đầy đủ 8 profiles: default, bd-mkt, glv-director, grill-qa, it-ai, r-and-d, reviewer, writers
  4. Xác nhận qua API: GET /api/status → auth_required: false, auth_providers: []

  5. Tailscale đang hoạt động và đã có sẵn URL HTTPS nội bộ:

  6. Mac: keiras-macbook-air (100.117.91.103)
  7. VPS: vmi3427693 (100.71.157.103, direct connection active)
  8. Tailscale Serve URL cho VPS: https://vmi3427693.tail8c1aaf.ts.net/
  9. Nginx trên VPS (port 9121) đã cấu hình sẵn proxy ngược vào 127.0.0.1:9119 bao gồm cả WebSocket (Upgrade $http_upgrade)

  10. Test kết nối thực tế từ Mac đã thành công: curl -k https://vmi3427693.tail8c1aaf.ts.net/api/status → {"auth_required": false, "profiles": ["default", "bd-mkt", "glv-director", ...], ...}

  11. Hermes Desktop (Electron) hỗ trợ native Remote Mode qua connection.json hoặc Settings UI — không cần cài thêm plugin hay wrapper.

❌ Những gì kế hoạch cũ đề xuất SAI, nay bỏ đi:

Đề xuất cũ Lý do bỏ
Tạo systemd hermes-serve.service mới hermes-dashboard.service đã làm chính xác điều đó rồi
Thêm subdomain hermes.161-97-131-21.sslip.io Tailscale URL https://vmi3427693.tail8c1aaf.ts.net/ đã hoạt động
Basic Auth password cho Dashboard Tailscale là mạng nội bộ private (WireGuard), Hermes tự nhận auth_required: false
GATEWAY_PROXY_URL env var Desktop dùng connection.json hoặc Settings UI — đơn giản và chính thức hơn

Kiến Trúc Mục Tiêu (Đã Điều Chỉnh)

┌─────────────────────────────────────────────────────────────────┐
│                    VPS 161.97.131.21 — SINGLE BRAIN             │
│                                                                  │
│  ┌──────────────────────────┐  ┌────────────────────────────┐   │
│  │ hermes-gateway.service   │  │ hermes-dashboard.service   │   │
│  │ (Telegram + Cron 24/7)   │  │ Port 9119 → localhost      │   │
│  └───────────┬──────────────┘  └────────────┬───────────────┘   │
│              │                               │                    │
│              └──────────────┬────────────────┘                   │
│                             ▼                                    │
│                  ┌─────────────────────┐                        │
│                  │ 9router :20128       │                        │
│                  │ (5 Antigravity accts │                        │
│                  │  + combo routing)    │                        │
│                  └─────────────────────┘                        │
│                                                                  │
│  ┌──────────────────────────┐  ┌────────────────────────────┐   │
│  │ /root/GitHub             │  │ Nginx :9121                │   │
│  │ (git sync repo)          │  │ proxy → 9119 + WebSocket   │   │
│  └──────────────────────────┘  └────────────┬───────────────┘   │
└───────────────────────────────────────────── │ ─────────────────┘
                                               │ Tailscale (WireGuard)
                                               │ https://vmi3427693.tail8c1aaf.ts.net/
┌─────────────────────────────────────────────────────────────────┐
│                    Mac Local (Thin Clients)                      │
│                                                                  │
│  ┌─────────────────────────────────┐  ┌───────────────────────┐ │
│  │ Hermes Desktop (Electron 0.17)  │  │ Antigravity IDE       │ │
│  │ mode: remote                    │  │ ~/Documents/GitHub    │ │
│  │ → vmi3427693.tail8c1aaf.ts.net  │  │ (local workspace)     │ │
│  └─────────────────────────────────┘  └───────────────────────┘ │
│                                                                  │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │ ~/Documents/GitHub  ←──git push/pull──→  /root/GitHub      │ │
│  │ (GitHub remote: nhivo2504/keira-workspace)                  │ │
│  └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

Kế Hoạch Triển Khai (3 Bước, Tinh Gọn)

Bước 1 — Kết nối Hermes Desktop với VPS qua Tailscale

Mục tiêu: Hermes Desktop trên Mac chuyển từ "local agent" sang "thin client" điều khiển VPS Hermes.

Cách thực hiện (chọn 1 trong 2):

Phương án A — Settings UI (dễ nhất, không cần sửa file): 1. Mở Hermes Desktop trên Mac 2. Vào Settings → Gateway 3. Chọn Remote gateway 4. Nhập Remote URL: https://vmi3427693.tail8c1aaf.ts.net 5. Nhấn Test connection → xác nhận kết nối 6. Nhấn Save / Apply

Phương án B — Sửa file connection.json (tự động hoá được):

Tạo/ghi đè /Users/keira/Library/Application Support/Hermes/connection.json:

{
  "mode": "remote",
  "remote": {
    "url": "https://vmi3427693.tail8c1aaf.ts.net",
    "authMode": "none"
  },
  "profiles": {}
}

Kết quả kỳ vọng: Desktop hiển thị đầy đủ 8 profiles từ VPS, chat trong Desktop chạy logic trên VPS (dùng 9router combo + SOUL.md + skills CEO OS).

Lưu ý: Vì auth_required: false (Tailscale đảm bảo bảo mật ở network level), không cần nhập username/password trong Desktop.


Bước 2 — Đồng bộ Workspace 2 Chiều (Git Bidirectional Sync)

Mục tiêu: Khi Hermes trên VPS (qua Desktop hay Telegram) tạo/sửa file trong /root/GitHub, file đó tự động được đẩy lên GitHub và Mac tự nhận về. Ngược lại khi Antigravity trên Mac commit code, VPS cũng tự cập nhật.

Tình trạng hiện tại: - VPS cron: */15 * * * * cd /root/GitHub && git pull origin main (chỉ kéo, không đẩy) - Mac: Antigravity commit thủ công

Cập nhật VPS cron thành sync 2 chiều an toàn:

# Script: /root/scripts/git-sync.sh
#!/bin/bash
set -e
cd /root/GitHub

# 1. Stage và commit mọi thay đổi do Hermes tạo ra (nếu có)
git add -A
if ! git diff-index --quiet HEAD; then
    git commit -m "chore: auto-sync from VPS Hermes [HM]"
fi

# 2. Kéo thay đổi từ Mac (rebase tránh merge commit rác)
git pull --rebase origin main

# 3. Đẩy lên GitHub (bao gồm cả commit VPS vừa tạo)
git push origin main

Cron entry mới (mỗi 10 phút):

*/10 * * * * /bin/bash /root/scripts/git-sync.sh >> /root/github-sync.log 2>&1

Thêm symlink để Hermes thấy Projects trong CEO OS workspace:

# Để Telegram bot và Hermes Desktop cùng thao tác với Projects/ trong repo GitHub
ln -sfn /root/GitHub/Projects /opt/ai-os/products/ceo/projects

Lưu ý về conflicts: Quy ước tag commit [HM] cho VPS Hermes, [AG] cho Antigravity Mac. Nếu cả hai bên sửa cùng file, --rebase sẽ yêu cầu giải quyết conflict thủ công (log ghi ra /root/github-sync.log). Để hạn chế conflict: mỗi bên làm việc ở subdirectory riêng (VPS → Projects/*/, Mac → code + config).


Bước 3 — Xác Minh Toàn Bộ Hệ Thống

Kiểm tra Hermes Desktop:

# Từ Mac, verify Tailscale → VPS Hermes API hoạt động:
curl -s https://vmi3427693.tail8c1aaf.ts.net/api/status | python3 -m json.tool
# → auth_required: false, profiles đủ 8 cái, overall: ok (hoặc degraded nếu gateway chưa chạy)

Kiểm tra git sync 2 chiều:

# Tạo file test trên VPS:
ssh root@161.97.131.21 "echo 'test-vps' > /root/GitHub/test-sync-vps.txt && bash /root/scripts/git-sync.sh"
# Đợi 10-15 giây rồi pull trên Mac:
cd ~/Documents/GitHub && git pull origin main
ls test-sync-vps.txt  # → phải thấy file này

Kiểm tra symlink projects:

ssh root@161.97.131.21 "ls -la /opt/ai-os/products/ceo/projects"
# → phải trỏ về /root/GitHub/Projects

Kiểm tra Telegram không bị ảnh hưởng:

ssh root@161.97.131.21 "systemctl is-active hermes-gateway"
# → active (hermes-gateway không liên quan hermes-dashboard, chạy song song)

Bảng Tổng Kết — Trước / Sau

Interface Trước Sau
Telegram ✅ VPS Hermes → 9router ✅ Giữ nguyên
Hermes Desktop ❌ Local agent trống, config riêng ✅ Remote client → VPS Hermes (8 profiles, skills, SOUL)
Antigravity IDE ✅ Local workspace ✅ Giữ nguyên + git sync 2 chiều
Git Workspace ⚠️ 1 chiều (Mac → VPS pull) ✅ 2 chiều (auto commit + push từ VPS)
VPS Hermes Gateway only (Telegram) ✅ Gateway + Dashboard (Desktop API) — đều đã chạy

Điều Không Thay Đổi (Giữ Nguyên)